## 5. 删除检查项
### 5.1 完善页面
为了防止用户误操作，点击删除按钮时需要弹出确认删除的提示，
用户点击取消则不做任何操作，用户点击确定按钮再提交删除请求。
------------------------------------------------------------
1.前端
1.#### 5.1.1 绑定单击事件
  需要为删除按钮绑定单击事件，并且将当前行数据作为参数传递给处理函数
  scope.row传入的数据


            // 删除
            handleDelete(row) {
                // scope.row是一个json对象
                //$confirm弹出窗口
                this.$confirm("确认删除当前选中记录吗？", "提示", {
                    type: 'warning'
                    // 是箭头函数
                }), then(() => {
                    //点击确定按钮时只需此处代码 发送ajax请求
                    //检查项ID提交到Controller进行处理
                    //.then((res)=>{回调函数
                    axios.get("/checkitem/delete.do?id=" + row.id).then((res) => {
                        if (!res.data.flat) {
                            //删除失败
                            this.$message.error(res.data.message);
                        } else {
                            //删除成功
                            //跳出成功的弹窗信息
                            this.$message({
                                message: res.data.message,
                                type: 'success'
                            });
                        }
                    });
                    //调用分页查询，获取最新的内容
                    this.findPage();
                    alert('用户点击了确定按钮')

                }).catch(() => {
                    this.$message({
                        message: '操作已经取消',
                        type: 'info'
                    });

                    alert('用户点击了取消按钮')
                });
            }
        }
 ------------------------------------------------------------
### 5.2 后台代码
#### 5.2.1 Controller
在CheckItemController中增加删除方法

//删除
@RequestMapping("/delete")
public Result delete(Integer id){
  try {
    checkItemService.delete(id);
  }catch (RuntimeException e){
    return new Result(false,e.getMessage());
  }catch (Exception e){
    return new Result(false, MessageConstant.DELETE_CHECKITEM_FAIL);
  }
  return new Result(true,MessageConstant.DELETE_CHECKITEM_SUCCESS);
}
------------------------------------------------------------
#### 5.2.2 服务接口
在CheckItemService服务接口中扩展删除方法
public void delete(Integer id);

#### 5.2.3 服务实现类
注意：不能直接删除，需要判断当前检查项是否和检查组关联，如果已经和检查组进行了关联则不允许删除

//删除
public void delete(Integer id) throws RuntimeException{
  //查询当前检查项是否和检查组关联
  long count = checkItemDao.findCountByCheckItemId(id);
  if(count > 0){
    //当前检查项被引用，不能删除
    throw new RuntimeException("当前检查项被引用，不能删除");
  }
  checkItemDao.deleteById(id);
}
------------------------------------------------------------
5.2.4 Dao接口
在CheckItemDao接口中扩展方法findCountByCheckItemId和deleteById
public void deleteById(Integer id);
public long findCountByCheckItemId(Integer checkItemId);

5.2.5 Mapper映射文件
在CheckItemDao.xml中扩展SQL语句

<!--删除-->
//进删除语句使用的是delete标签

<delete id="deleteById" parameterType="int">
  delete from t_checkitem where id = #{id}
</delete>

<!--根据检查项id查询中间关系表-->
<select id="findCountByCheckItemId" resultType="long" parameterType="int">
  select count(*) from t_checkgroup_checkitem where checkitem_id = #{checkitem_id}
</select>